<?php

class CsvToXml {

    function __construct() {
        
    }

    public function convert($doc) {
        try {
            $i = 1; //controlar primeira linha   

            $xml = new DOMDocument();
            $xml->formatOutput = true;
            $xml->encoding = 'utf-8';
            $root = $xml->createElement("root");
            $xml->appendChild($root);

            while (!feof($doc)) { //Interação sobre cada linho do documento
                $str = fgetss($doc, 4096); //Lê uma linha de um ponteiro de arquivo
                $titulos = explode(',', $str); //quero a linha para obter os valor em cada posição
                if ($i == 1) {// se for primeira linha siginifica que é o nome das tags do arquivo
                    $informations = explode(',', $str);
                    foreach ($titulos as $key => $value) {
                        if (strlen($informations[$key]) > 0) {
                            $tags[] = $informations[$key];
                        }
                    }
                    $i++;
                } elseif (strlen($str) > 0) {
                    $informations = explode(',', $str);
                    $raw = $xml->createElement("raw");
                    foreach ($titulos as $key => $value) {
                        $tag = $xml->createElement(preg_replace("/[^A-Za-z0-9]/u", "", $tags[$key]));
                        $tag->appendChild($xml->createTextNode($informations[$key]));
                        $raw->appendChild($tag);
                    }
                    $root->appendChild($raw);
                }
            }
            fclose($doc);
            $xml->save("file.xml");
            header("Location: file.xml");
        } catch (Exception $exc) {
            echo "não foi possivel converter o arquivo";
        }
    }

}